// import { encryptByAES } from './encrypt';
// import config from '@/config';

export default {
  /** showToast
   * 由于微信环境先调用showToast后调用hideLoading会把toast关闭，所以此处在setTimeout里调用，保证一个事件循环中hideLoading先进行
   * 真机延时0即可，模拟器需要加长
   */
  toast(param) {
    setTimeout(() => {
      if (typeof param === 'string') {
        uni.showToast({
          title: param,
          duration: 3000,
          icon: 'none',
        });
      }
      if (typeof param === 'object') {
        uni.showToast({
          duration: 3000,
          icon: 'none',
          ...param,
        });
      }
    }, 10);
  },

  /**显示Loading */
  showLoading(data) {
    uni.showLoading({
      title: '加载中',
      ...data,
    });
  },

  /**隐藏loading */
  hideLoading() {
    uni.hideLoading();
  },

  /**反转时间戳 */
  getReverseTime() {
    const time = new Date().getTime();

    return {
      time,
      reversetime: time
        .toString()
        .split('')
        .reverse()
        .join(''),
    };
  },

  /**导航跳转时复杂参数先存到globalData里面 */
  setNavData(data) {
    getApp().globalData.navigateData = data;
  },

  /**导航跳转时从globalData取出复杂参数 */
  getNavData() {
    return getApp().globalData.navigateData;
  },

  /**身份证获取年龄 */
  getAgeByIDNumber(identityCard) {
    const len = (identityCard + '').length;
    if (len == 0) {
      return 0;
    } else {
      if (len != 15 && len != 18) {
        //身份证号不合法
        return 0;
      }
    }
    let strBirthday = '';
    if (len === 18) {
      // 从18位身份证号获取生日和性别代码
      strBirthday =
        identityCard.substr(6, 4) +
        '/' +
        identityCard.substr(10, 2) +
        '/' +
        identityCard.substr(12, 2);
    }
    if (len === 15) {
      strBirthday =
        '19' +
        identityCard.substr(6, 2) +
        '/' +
        identityCard.substr(8, 2) +
        '/' +
        identityCard.substr(10, 2);
    }
    // 时间字符串里必须/
    const birthDate = new Date(strBirthday);
    const nowDateTime = new Date();
    let age = nowDateTime.getFullYear() - birthDate.getFullYear();
    // 考虑月，天的因素，getMonth获取的是从0开始的，这里进行比较，不需要加1
    if (
      nowDateTime.getMonth() < birthDate.getMonth() ||
      (nowDateTime.getMonth() === birthDate.getMonth && nowDateTime.getDate() < birthDate.getDate())
    ) {
      age--;
    }

    return age;
  },

  /**手机号，姓名，身份证前端脱敏处理 */
  desensitizeInfo(msg, type = 'name') {
    let returnStr = '';

    switch (type) {
      case 'name':
        // eslint-disable-next-line no-case-declarations
        const firstWord = msg.substring(0, 1);
        // eslint-disable-next-line no-case-declarations
        const lastWord = msg.substring(msg.length - 1, msg.length);
        returnStr`${firstWord}*${msg.length >= 3 ? lastWord : ''}`;
        break;

      // 手机号 155****5555 前三后四
      case 'tel':
        returnStr = `${msg.substring(0, 3)}****${msg.substring(msg.length - 4, msg.length)}`;
        break;

      //身份证前六后四
      case 'idNum':
        returnStr = `${msg.substring(0, 6)}******${msg.substring(msg.length - 4, msg.length)}`;
        break;

      default:
        break;
    }

    return returnStr;
  },

  //身份证获取性别
  getSexByID(psidno) {
    var sexno, sex;
    if (psidno.length === 18) {
      sexno = psidno.substring(16, 17);
    } else if (psidno.length === 15) {
      sexno = psidno.substring(14, 15);
    } else {
      alert('身份证号错误！');
      return false;
    }
    const tempid = sexno % 2;
    if (tempid === 0) {
      sex = '女';
    } else {
      sex = '男';
    }
    return sex;
  },

  /**传入对象返回url参数 */
  getParam(data) {
    let url = '';
    for (const k in data) {
      let value = data[k] !== undefined ? data[k] : '';
      url += `&${k}=${value}`;
    }
    return url ? url.substring(1) : '';
  },

  /**将url和参数拼接成完整地址 */
  getUrl(url, data) {
    return (url +=
      (url.indexOf('?') < 0 ? '?' : url.indexOf('&') < 0 ? '&' : '') + this.getParam(data));
  },

  /**获取路由中某个参数值 */
  getQueryString(name, url) {
    const reg = new RegExp('(^|&)' + name + '=([^&]*)(&|$)', 'i');
    const r = (url && url.split('?')[1].match(reg)) || window.location.search.substr(1).match(reg);
    if (r != null) return unescape(r[2]);
    return null;
  },

  /**生产唯一id */
  getUID() {
    function S4() {
      return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
    }

    return S4() + S4() + '-' + S4() + '-' + S4() + '-' + S4() + '-' + S4() + S4() + S4();
  },

  /**
   *
   * @param {跳转到其他页面} jumpObj
   *  {
        jumpUrl: '/pages/addcar/index',
        // 是否是tabBar
        isTabbar: false,
      }
   */
  jumpToOtherPage(jumpObj) {
    if (jumpObj && jumpObj.isTabbar) {
      uni.switchTab({
        url: jumpObj.jumpUrl,
      });
    } else {
      uni.navigateTo({
        url: this.getUrl(jumpObj.jumpUrl, { ...jumpObj.data }),
      });
    }
  },

  getDaysBetween(dateString2) {
    // const  startDate = Date.parse(dateString1);
    const startDate = new Date();
    const endDate = Date.parse(dateString2);
    const days = (endDate - startDate) / (1 * 24 * 60 * 60 * 1000);
    return Math.floor(days);
  },

  parOrderType(orderType) {
    if (orderType === 1) {
      return '六年免检';
    } else if (orderType == 2) {
      return '代驾审车';
    } else if (orderType == 3) {
      return '自驾审车';
    } else {
      return '--';
    }
  },

  parDictLabel(dictArr, dictValue) {
    if (!dictValue) {
      return null;
    }
    let dict = dictArr.filter(item => item.dictValue == dictValue);
    if (!dict || dict.length < 1){
      return null
    }
    return dict[0].dictLabel;
  },

  parCouponType(couponType) {
    if (couponType === 1) {
      return '免检代办';
    } else if (couponType == 2) {
      return '代驾审车';
    } else {
      return '自驾审车';
    }
  },
  parOrderIsPay(orderState) {
    // 0未支付 1待接单 3 已接单 6 取车中 9 服务中 12 检测中 15 已检测 18送车中  21已完成 24已取消
    const type = {
      0: '未支付',
      1: '已支付',
    };
    return type[orderState];
  },

  parOrderState(orderState) {
    // 0未支付 1待接单 3 已接单 6 取车中 7 待确认 9 服务中 12 检测中 15 已检测 18送车中  21已完成 24已取消
    const type = {
      0: '未支付',
      1: '待接单',
      3: '已接单',
      6: '取车中',
      7: '待确认',
      9: '服务中',
      12: '检测中',
      15: '已检测',
      18: '送车中',
      21: '已完成',
      24: '已取消',
      99: '已删除',
      104: '退款审核中',
      109: '退款中',
      110: '已退款'
    };
    return type[orderState];
  },

  parCarType(carType) {
    if (carType === '小型轿车') {
      return 0;
    } else if (carType === '小型面包车') {
      return 1;
    } else if (carType === '小型普通客车') {
      return 2;
    } else if (carType === '小型越野客车') {
      return 3;
    }
  },

  fmtCarType(carType) {
    if (carType === 1) {
      return '小型轿车';
    } else if (carType === 2) {
      return '小型面包车';
    } else if (carType === 3) {
      return '小型普通客车';
    } else if (carType === 4) {
      return '小型越野客车';
    }
  },

  phoneClick() {
    wx.makePhoneCall({
      phoneNumber: '400-0371-298', //电话号码
    });
  },

  loginGetTelphone(e) {
    if (e.detail.encryptedData && e.detail.iv) {
      uni.showLoading({
        title: '加载中',
      });

      // 用户允许获取手机号
      this.$nextTick(() => {
        wx.login({
          success: res => {
            const code = res.code;
            this.$clApi.haoleiAgentApi
              .fetchBindTel({
                data: {
                  en: e.detail.encryptedData,
                  iv: e.detail.iv,
                  code: code,
                },
              })
              .then(res => {
                uni.hideLoading();
                if (res.data && res.data.loginFlag) {
                  this.$store.dispatch('baseInfo/setBaseInfo', {
                    token: res.data.token,
                  });
                  // 显示手机号
                }
              });
          },
          fail: e => {
            console.log(e);
            this.$utils.toast('微信授权失败，请检查网络后重试');
          },
        });
      });
    } else {
      // 用户拒绝
      this.$utils.toast('已拒绝');
    }
  },
};
